load("@rules_java//java:defs.bzl", "java_library")
load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain")

LITE_SRCS = [
    # Keep in sync with `//java/lite:pom.xml`.
    "src/main/java/com/google/protobuf/AbstractMessageLite.java",
    "src/main/java/com/google/protobuf/AbstractParser.java",
    "src/main/java/com/google/protobuf/AbstractProtobufList.java",
    "src/main/java/com/google/protobuf/AllocatedBuffer.java",
    "src/main/java/com/google/protobuf/Android.java",
    "src/main/java/com/google/protobuf/ArrayDecoders.java",
    "src/main/java/com/google/protobuf/BinaryReader.java",
    "src/main/java/com/google/protobuf/BinaryWriter.java",
    "src/main/java/com/google/protobuf/BooleanArrayList.java",
    "src/main/java/com/google/protobuf/BufferAllocator.java",
    "src/main/java/com/google/protobuf/ByteBufferWriter.java",
    "src/main/java/com/google/protobuf/ByteOutput.java",
    "src/main/java/com/google/protobuf/ByteString.java",
    "src/main/java/com/google/protobuf/CodedInputStream.java",
    "src/main/java/com/google/protobuf/CodedInputStreamReader.java",
    "src/main/java/com/google/protobuf/CodedOutputStream.java",
    "src/main/java/com/google/protobuf/CodedOutputStreamWriter.java",
    "src/main/java/com/google/protobuf/DoubleArrayList.java",
    "src/main/java/com/google/protobuf/ExperimentalApi.java",
    "src/main/java/com/google/protobuf/ExtensionLite.java",
    "src/main/java/com/google/protobuf/ExtensionRegistryFactory.java",
    "src/main/java/com/google/protobuf/ExtensionRegistryLite.java",
    "src/main/java/com/google/protobuf/ExtensionSchema.java",
    "src/main/java/com/google/protobuf/ExtensionSchemaLite.java",
    "src/main/java/com/google/protobuf/ExtensionSchemas.java",
    "src/main/java/com/google/protobuf/FieldInfo.java",
    "src/main/java/com/google/protobuf/FieldSet.java",
    "src/main/java/com/google/protobuf/FieldType.java",
    "src/main/java/com/google/protobuf/FloatArrayList.java",
    "src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java",
    "src/main/java/com/google/protobuf/GeneratedMessageLite.java",
    "src/main/java/com/google/protobuf/IntArrayList.java",
    "src/main/java/com/google/protobuf/Internal.java",
    "src/main/java/com/google/protobuf/InvalidProtocolBufferException.java",
    "src/main/java/com/google/protobuf/IterableByteBufferInputStream.java",
    "src/main/java/com/google/protobuf/JavaType.java",
    "src/main/java/com/google/protobuf/LazyField.java",
    "src/main/java/com/google/protobuf/LazyFieldLite.java",
    "src/main/java/com/google/protobuf/LazyStringArrayList.java",
    "src/main/java/com/google/protobuf/LazyStringList.java",
    "src/main/java/com/google/protobuf/ListFieldSchema.java",
    "src/main/java/com/google/protobuf/LongArrayList.java",
    "src/main/java/com/google/protobuf/ManifestSchemaFactory.java",
    "src/main/java/com/google/protobuf/MapEntryLite.java",
    "src/main/java/com/google/protobuf/MapFieldLite.java",
    "src/main/java/com/google/protobuf/MapFieldSchema.java",
    "src/main/java/com/google/protobuf/MapFieldSchemaLite.java",
    "src/main/java/com/google/protobuf/MapFieldSchemas.java",
    "src/main/java/com/google/protobuf/MessageInfo.java",
    "src/main/java/com/google/protobuf/MessageInfoFactory.java",
    "src/main/java/com/google/protobuf/MessageLite.java",
    "src/main/java/com/google/protobuf/MessageLiteOrBuilder.java",
    "src/main/java/com/google/protobuf/MessageLiteToString.java",
    "src/main/java/com/google/protobuf/MessageSchema.java",
    "src/main/java/com/google/protobuf/MessageSetSchema.java",
    "src/main/java/com/google/protobuf/MutabilityOracle.java",
    "src/main/java/com/google/protobuf/NewInstanceSchema.java",
    "src/main/java/com/google/protobuf/NewInstanceSchemaLite.java",
    "src/main/java/com/google/protobuf/NewInstanceSchemas.java",
    "src/main/java/com/google/protobuf/NioByteString.java",
    "src/main/java/com/google/protobuf/OneofInfo.java",
    "src/main/java/com/google/protobuf/Parser.java",
    "src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java",
    "src/main/java/com/google/protobuf/ProtoSyntax.java",
    "src/main/java/com/google/protobuf/Protobuf.java",
    "src/main/java/com/google/protobuf/ProtobufArrayList.java",
    "src/main/java/com/google/protobuf/ProtobufLists.java",
    "src/main/java/com/google/protobuf/ProtocolStringList.java",
    "src/main/java/com/google/protobuf/RawMessageInfo.java",
    "src/main/java/com/google/protobuf/Reader.java",
    "src/main/java/com/google/protobuf/RopeByteString.java",
    "src/main/java/com/google/protobuf/Schema.java",
    "src/main/java/com/google/protobuf/SchemaFactory.java",
    "src/main/java/com/google/protobuf/SchemaUtil.java",
    "src/main/java/com/google/protobuf/SmallSortedMap.java",
    "src/main/java/com/google/protobuf/StructuralMessageInfo.java",
    "src/main/java/com/google/protobuf/TextFormatEscaper.java",
    "src/main/java/com/google/protobuf/UninitializedMessageException.java",
    "src/main/java/com/google/protobuf/UnknownFieldSchema.java",
    "src/main/java/com/google/protobuf/UnknownFieldSetLite.java",
    "src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java",
    "src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java",
    "src/main/java/com/google/protobuf/UnsafeUtil.java",
    "src/main/java/com/google/protobuf/Utf8.java",
    "src/main/java/com/google/protobuf/WireFormat.java",
    "src/main/java/com/google/protobuf/Writer.java",
]

# Should be used as `//java/lite`.
java_library(
    name = "lite",
    srcs = LITE_SRCS,
    visibility = [
        "//java/lite:__pkg__",
    ],
)

java_library(
    name = "core",
    srcs = glob(
        [
            "src/main/java/com/google/protobuf/*.java",
        ],
        exclude = LITE_SRCS,
    ) + [
        "//:gen_well_known_protos_java",
    ],
    visibility = ["//visibility:public"],
    exports = [
        "//java/lite",
    ],
    deps = [
        "//java/lite",
    ],
)

proto_lang_toolchain(
    name = "toolchain",
    command_line = "--java_out=$(OUT)",
    runtime = ":core",
    visibility = ["//visibility:public"],
)
